package com.yx.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yx.domain.ResponseResult;
import com.yx.domain.dto.TagListDto;
import com.yx.domain.entity.Tag;
import com.yx.domain.vo.PageVo;
import com.yx.domain.vo.TagVo;
import com.yx.mapper.TagMapper;
import com.yx.service.TagService;
import com.yx.utils.BeanCopyUtils;
import com.yx.utils.SecurityUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

/**
 * 标签(Tag)表服务实现类
 *
 * @author makejava
 * @since 2023-06-03 10:55:05
 */
@Service("tagService")
public class TagServiceImpl extends ServiceImpl<TagMapper, Tag> implements TagService {

    @Override
    public ResponseResult<PageVo> pageTagList(Integer pageNum, Integer pageSize, TagListDto tagListDto) {
        //分页查询
        Page<Tag> page=new Page<>();
        page.setCurrent(pageNum);
        page.setSize(pageSize);
        LambdaQueryWrapper<Tag> wrapper = new LambdaQueryWrapper<>();
        wrapper.like(StringUtils.hasText(tagListDto.getName()),Tag::getName,tagListDto.getName());
        wrapper.like(StringUtils.hasText(tagListDto.getRemark()),Tag::getRemark,tagListDto.getRemark());
        page(page,wrapper);
        //封装数据返回
        PageVo pageVo = new PageVo(page.getRecords(),page.getTotal());
        //List<TagVo> tagListVos = BeanCopyUtils.copyBeanList(pageVo.getRows(), TagVo.class);
        return ResponseResult.okResult(pageVo);
    }

    @Override
    public ResponseResult addTag(Tag tag) {
        //获取当前用户Id
        Long userId = SecurityUtils.getUserId();

        tag.setCreateBy(userId);
        tag.setUpdateBy(userId);
        save(tag);
//        //获取当前时间
//        Date date = new Date();
//        //将时间转换成Timestamp类型，这样便可以存入到Mysql数据库中
//        Timestamp t = new Timestamp(date.getTime());
//        tag.setCreateTime(t);
//        tag.setUpdateTime(t);
        return ResponseResult.okResult();
    }

    @Override
    public ResponseResult deleteTag(Long tagId) {
        TagMapper tagMapper = getBaseMapper();
        tagMapper.deleteById(tagId);
        return ResponseResult.okResult();
    }

    @Override
    public ResponseResult getTagInfo(Long tagId) {
        Tag tag = getById(tagId);
        TagVo tagVo = BeanCopyUtils.copyBean(tag, TagVo.class);
        return ResponseResult.okResult(tagVo);
    }

    @Override
    public ResponseResult updateTag(Tag tag) {
        //获取修改者的用户id
        Long userId = SecurityUtils.getUserId();
        tag.setUpdateBy(userId);
        updateById(tag);
        return ResponseResult.okResult();
    }

}
